package com.hex.ds.hdtp.core.app.common.enums;

/**
 * 系统错误码
 * ERROR_2
 * ERROR_3 http对外请求异常
 * ERROR_4、ERROR_5、ERROR_6开头的错误码为预留错误码
 * ERROR_9 开头为外部接口错误相关
 * Created by tomnic.wang
 * 2017/11/2.
 */
public enum ErrorCode {

    ERROR_000000("000000", "应用程序内部异常"),
    ERROR_000001("000001", "解密异常"),
    //ERROR_01开头为spring相关错误
    ERROR_010000("010000", "Spring WebApplicationContext中未找到制定的对象服务"),

    ERROR_300001("300001", "HTTP调用返回信息为空"),
    ERROR_300002("300002", "HTTP调用失败"),
    ERROR_300003("300003", "HTTP返回值JSON类型转换异常"),
    ERROR_300004("300004", "HTTP请求上传文件未正常获取!"),

    ERROR_400000("400000", "未知异常"),
    ERROR_4100002("4100002", "编码异常"),
    ERROR_4000004("4000004", "XML字符串转对象异常"),
    ERROR_4000005("4000005", "对象转XML字符串异常"),
    ERROR_4000006("4000006", "拆包出错"),
    ERROR_4000007("4000007", "外部接口查询失败"),
    ERROR_4000008("4000008", "对象之间copy赋值异常"),
    ERROR_4000996("4000996", "外部接口返回异常，有错误描述"),
    ERROR_4000997("4000997", "现在没有数据稍后再来"),
    ERROR_4000998("4000998", "策略查询失败"),
    ERROR_4000999("4000999", "外部接口查询异常"),
    ERROR_4999999("4999999", "无满足该条件记录"),
    ERROR_400400("400400", "数据新增失败"),
    ERROR_400401("400401", "数据更新失败"),
    ERROR_400402("400402", "数据删除失败"),
    ERROR_400409("400409", "查询一条数据但返回多条数据"),


    ERROR_600000("600000", "下载错误"),
    ERROR_600001("600001", "解压错误"),
    ERROR_600002("600002", "解析xml入库错误"),
    ERROR_600003("600003", "数据入库错误"),
    ERROR_600004("600004", "文件格式错误"),
    ERROR_600005("600005", "文件导入错误"),
    ;

    public String getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    private String code;
    private String message;

    private ErrorCode(String code, String message) {
        this.code = code;
        this.message = message;
    }

    public static String getMessage(String code) {
        ErrorCode[] errorCodes = values();
        for (ErrorCode errorCode : errorCodes) {
            if (errorCode.code.equals(code)) {
                return errorCode.message;
            }
        }
        return code;
    }
}
